const fs = require('fs');
const path = require('path');

// 模拟 Egg.js 上下文
const mockCtx = {
  logger: {
    info: (...args) => console.log('[INFO]', ...args),
    error: (...args) => console.error('[ERROR]', ...args),
    warn: (...args) => console.warn('[WARN]', ...args)
  }
};

// 读取采购订单服务文件并提取extractTaobaoPurchaseOrders方法
const serviceCode = fs.readFileSync('./app/service/purchase_order_service.js', 'utf8');

// 提取extractTaobaoPurchaseOrders方法的实现
const extractTaobaoPurchaseOrders = function(item) {
  const ctx = mockCtx;
  const orders = [];
  
  try {
    // 解析响应数据 - 注意数据在 response.data.data 中
    const responseData = item.response.data.data;
    
    // 遍历所有订单容器
    for (const key in responseData) {
      if (key.startsWith('shopOrderContainer_')) {
        const orderId = key.split('_')[1];
        
        // 获取订单信息
        const shopInfo = responseData[`shopInfo_${orderId}`];
        const orderPayment = responseData[`orderPayment_${orderId}`];
        
        if (!shopInfo || !orderPayment) {
          continue;
        }
        
        // 解析订单基本信息
        const orderDate = new Date(shopInfo.fields.createTime);
        const totalAmount = parseFloat(orderPayment.fields.actualFee.value.replace('￥', '')) || 0;
        
        // 创建订单对象
        const order = {
          orderNumber: orderId, // 订单号
          supplierId: 1, // 供应商ID（需要根据店铺信息匹配，这里暂时设为1）
          purchaser: '系统导入', // 采购员
          orderDate: orderDate, // 下单日期
          expectedDeliveryDate: null, // 预计交货日期
          totalAmount: totalAmount, // 实付款
          remark: `淘宝进货单 - ${shopInfo.fields.shopName}`, // 备注
          items: []
        };
        
        // 解析订单项 - 使用正确的模式 orderItemInfo_{orderId}_{subOrderId}
        for (const itemKey in responseData) {
          if (itemKey.startsWith(`orderItemInfo_${orderId}_`)) {
            const itemInfo = responseData[itemKey];
            const itemData = itemInfo.fields.item;
            
            // 解析商品信息
            const price = parseFloat(itemData.priceInfo.actualTotalFee.replace('￥', '')) || 0;
            const quantity = parseInt(itemData.quantity) || 0;
            const amount = price * quantity;
            
            // 合并规格信息
            let specification = '';
            if (itemData.skuInfo && Array.isArray(itemData.skuInfo)) {
              specification = itemData.skuInfo.map(sku => sku.skuValue).join(';');
            }
            
            order.items.push({
              productId: null, // 产品ID
              productName: itemData.title, // 品名
              specification: specification, // 规格
              quantity: quantity, // 数量
              unit: '件', // 单位
              unitPrice: price, // 价格
              amount: amount, // 金额
              remark: '' // 备注
            });
          }
        }
        
        // 如果有订单项，则添加到订单列表
        if (order.items.length > 0) {
          orders.push(order);
        }
      }
    }
    
    ctx.logger.info(`[PluginData] 成功提取 ${orders.length} 条淘宝采购订单数据`);
    return orders;
  } catch (error) {
    ctx.logger.error('[PluginData] 提取淘宝采购订单数据失败:', error);
    return [];
  }
};

// 读取淘宝进货单数据
const taobaoDataPath = path.join(__dirname, '通过插件拦截响应数据（淘宝进货单）.md');
let taobaoData;

try {
  const data = fs.readFileSync(taobaoDataPath, 'utf8');
  taobaoData = JSON.parse(data);
  console.log('成功读取淘宝进货单数据');
} catch (error) {
  console.error('读取淘宝进货单数据失败:', error);
  process.exit(1);
}

// 测试数据提取功能
console.log('开始提取淘宝采购订单数据...');
const extractedOrders = extractTaobaoPurchaseOrders(taobaoData.data[0]);

console.log('\n提取结果:');
console.log('订单数量:', extractedOrders.length);

// 显示第一个订单的详细信息
if (extractedOrders.length > 0) {
  const firstOrder = extractedOrders[0];
  console.log('\n第一个订单详情:');
  console.log('订单号:', firstOrder.orderNumber);
  console.log('下单日期:', firstOrder.orderDate);
  console.log('总金额:', firstOrder.totalAmount);
  console.log('备注:', firstOrder.remark);
  console.log('订单项数量:', firstOrder.items.length);
  
  // 显示订单项详情
  console.log('\n订单项详情:');
  firstOrder.items.forEach((item, index) => {
    console.log(`  项目 ${index + 1}:`);
    console.log(`    品名: ${item.productName}`);
    console.log(`    规格: ${item.specification}`);
    console.log(`    数量: ${item.quantity}`);
    console.log(`    单价: ${item.unitPrice}`);
    console.log(`    金额: ${item.amount}`);
  });
} else {
  console.log('未提取到任何订单数据');
}